//
//  ViewController.m
//  Custom
//
//  Created by apple on 15/9/12.
//  Copyright (c) 2015年 戴维营. All rights reserved.
//

#import "ViewController.h"
#import "CustomView.h"

@interface ViewController ()<CustomViewDelegate>

{
    CustomView *_customView;
    
    CGPoint _point;
}

@end

@implementation ViewController

#if 1

//---->代理
- (void)touchDown:(CustomView *)sender index:(int)index
{
    NSLog(@"%s",__PRETTY_FUNCTION__);
}

- (UIColor *)changeColor
{
    return [UIColor blueColor];
}

#endif

- (void)viewDidLoad {
    [super viewDidLoad];
    
#if 0
    1、在应用中有许多的控件在系统中并不存在，因此需要进行自定义。
    
    2、自定义控件一般是将多个控件封装在一起，实现某个特定的功能，能够提高代码到可读性、可重用性；
    
    3、自定义控件可能需要将用户操作（如点击、拖动等）传递到使用控件的对象中。
    
    4、自定义控件可能需要从其他对象获取数据；
    
    4、一般通过Block、Target -Action模式和代理方法实现上面的两点功能；
    
    
#endif
    
    _customView = [[CustomView alloc] initWithFrame:CGRectMake(20, 20, 100,100)];
    
    _customView.aLabel.backgroundColor = [UIColor whiteColor];
    
    _customView.bLabel.backgroundColor = [UIColor greenColor];
    
    _customView.aLabel.text = @"天王盖地虎！";
    
    _customView.bLabel.text = @"小鸡炖蘑菇！";
    
    //必须实现的代理
    
    _customView.delegate = self;
    

#if 0
    
    //block
    _customView.touchDown = ^(CustomView *sender)
    {
        NSLog(@"被点击了：%@",sender);
    };
 
    _customView.changeColor = ^
    {
        return [UIColor orangeColor];
    };
   
#endif
    
    _customView.backgroundColor = [UIColor yellowColor];
    
    [self.view addSubview:_customView];
    
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    
    _point = [touch locationInView:self.view];
    
    CGRect rect;
    
    rect.origin = _point;
    
    rect.size = CGSizeMake(_point.x,_point.y);
    
    _customView.frame = rect;
   
//在这里动态的改变customview的大小，是不会改变它里面两个label的位置的，因为他们是在custom初始化的时候久已经确定了的；在这里我们可以通过重写-layoutSubviews的方法解决；
  
//当一个视图被添加到其他视图上，或者改变大小的时候，都会调用他的-layoutsubviews方法。因此可以在里面调整子视图的坐标。
    
}



- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
